package cn.tedu.uep.user.controller;

import cn.tedu.uep.base.response.JsonResult;
import cn.tedu.uep.user.pojo.dto.UserLoginParam;
import cn.tedu.uep.user.pojo.dto.UserSaveNormalParam;
import cn.tedu.uep.user.pojo.dto.UserUpdateParam;
import cn.tedu.uep.user.pojo.entity.User;
import cn.tedu.uep.user.pojo.vo.UserVO;

import cn.tedu.uep.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@Slf4j
@RequestMapping("/v1/user")
public class UserController {
    @Autowired
    private UserService userService;
    /*用户模块
    *用于普通用户进行注册，接收普通用户（非管理员）的注册表单信息传到service层处理，不返回data值
    *管理端添加新用户采用另一个接口进行接收
    * */
    @PostMapping("/save/normal")
    public JsonResult saveNomalPerson(UserSaveNormalParam userSaveNormalParam){
        log.debug("controller层接收到普通用户的注册信息{}",userSaveNormalParam);
        userService.saveNormalPerson(userSaveNormalParam);
        return JsonResult.ok();
    }
    /*用户模块
     *用于用户进行登录，并将登录用户的个人信息返回并存放在前端localStorage中，
     *以便前端随时调用登录用户的个人信息
     * */
    @PostMapping("login")
    public  JsonResult login(@RequestBody UserLoginParam userLoginParam){
        log.debug("controller层接收到用户的登录信息{}",userLoginParam);
        UserVO userVO = userService.login(userLoginParam);
        log.debug("controller层返回用户信息{}给前端",userVO);
        return JsonResult.ok(userVO);
    }
    @PostMapping("update")
    public JsonResult updateUserInfo(@RequestBody UserUpdateParam userUpdateParam){
        log.debug("controller层接收到用户的更新个人信息{}",userUpdateParam);
        log.debug("controller层将用户的更新个人信息传递给service层，入参{}",userUpdateParam);
        UserVO userVO = userService.updateUserInfo(userUpdateParam);
        log.debug("controller层执行完毕，返回更新结果");
        return JsonResult.ok(userVO);
    }
}
